﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Collections.ObjectModel;
namespace produccion.modelo
{
    public class MEntregarReparaciones : ObservableObject
    {
        MDOgeneral _mod = new MDOgeneral();

        #region Propiedades

        private string _strReparacion;
        public string strReparacion
        {
            get { return _strReparacion; }
            set { _strReparacion = value; }
        }

        private Int32 _numConsecutivo;
        public Int32 numConsecutivo
        {
            get { return _numConsecutivo; }
            set { _numConsecutivo = value; }
        }

        private string _strOrden;
        public string strOrden
        {
            get { return _strOrden; }
            set { _strOrden = value; }
        }

        private string _strReferencia;
        public string strReferencia
        {
            get { return _strReferencia; }
            set { _strReferencia = value; }
        }

        private string _strNombreReferencia;
        public string strNombreReferencia
        {
            get { return _strNombreReferencia; }
            set { _strNombreReferencia = value; }
        }

        private string _strColor;
        public string strColor
        {
            get { return _strColor; }
            set { _strColor = value; }
        }

        private string _strNombreColor;
        public string strNombreColor
        {
            get { return _strNombreColor; }
            set { _strNombreColor = value; }
        }

        private string _strTalla;
        public string strTalla
        {
            get { return _strTalla; }
            set { _strTalla = value; }
        }

        private string _strTipo;
        public string strTipo
        {
            get { return _strTipo; }
            set { _strTipo = value; }
        }

        private string _strDetalle;
        public string strDetalle
        {
            get { return _strDetalle; }
            set { _strDetalle = value; }
        }


        private Boolean _logIncluir;
        public Boolean logIncluir
        {
            get { return _logIncluir; }
            set { _logIncluir = value; }
        }        

        private string _strMotivo1;
        public string strMotivo1
        {
            get { return _strMotivo1; }
            set { _strMotivo1 = value; }
        }

        private string _strMotivo2;
        public string strMotivo2
        {
            get { return _strMotivo2; }
            set { _strMotivo2 = value; }
        }

        private string _strMotivo3;
        public string strMotivo3
        {
            get { return _strMotivo3; }
            set { _strMotivo3 = value; }
        }

        private string _strMotivo4;
        public string strMotivo4
        {
            get { return _strMotivo4; }
            set { _strMotivo4 = value; }
        }

        private string _strMotivo5;
        public string strMotivo5
        {
            get { return _strMotivo5; }
            set { _strMotivo5 = value; }
        }

        private string _strCodigoMotivo1;
        public string strCodigoMotivo1
        {
            get { return _strCodigoMotivo1; }
            set { _strCodigoMotivo1 = value; }
        }

        private string _strCodigoMotivo2;
        public string strCodigoMotivo2
        {
            get { return _strCodigoMotivo2; }
            set { _strCodigoMotivo2 = value; }
        }

        private string _strCodigoMotivo3;
        public string strCodigoMotivo3
        {
            get { return _strCodigoMotivo3; }
            set { _strCodigoMotivo3 = value; }
        }

        private string _strCodigoMotivo4;
        public string strCodigoMotivo4
        {
            get { return _strCodigoMotivo4; }
            set { _strCodigoMotivo4 = value; }
        }

        private string _strCodigoMotivo5;
        public string strCodigoMotivo5
        {
            get { return _strCodigoMotivo5; }
            set { _strCodigoMotivo5 = value; }
        }

        private string _strProceso1;
        public string strProceso1
        {
            get { return _strProceso1; }
            set { _strProceso1 = value; }
        }

        private string _strProceso2;
        public string strProceso2
        {
            get { return _strProceso2; }
            set { _strProceso2 = value; }
        }

        private string _strProceso3;
        public string strProceso3
        {
            get { return _strProceso3; }
            set { _strProceso3 = value; }
        }

        private string _strProceso4;
        public string strProceso4
        {
            get { return _strProceso4; }
            set { _strProceso4 = value; }
        }

        private string _strProceso5;
        public string strProceso5
        {
            get { return _strProceso5; }
            set { _strProceso5 = value; }
        }

        private string _strCodigoProceso1;
        public string strCodigoProceso1
        {
            get { return _strCodigoProceso1; }
            set { _strCodigoProceso1 = value; }
        }

        private string _strCodigoProceso2;
        public string strCodigoProceso2
        {
            get { return _strCodigoProceso2; }
            set { _strCodigoProceso2 = value; }
        }

        private string _strCodigoProceso3;
        public string strCodigoProceso3
        {
            get { return _strCodigoProceso3; }
            set { _strCodigoProceso3 = value; }
        }

        private string _strCodigoProceso4;
        public string strCodigoProceso4
        {
            get { return _strCodigoProceso4; }
            set { _strCodigoProceso4 = value; }
        }

        private string _strCodigoProceso5;
        public string strCodigoProceso5
        {
            get { return _strCodigoProceso5; }
            set { _strCodigoProceso5 = value; }
        }

        private string _strObservaciones;
        public string strObservaciones
        {
            get { return _strObservaciones; }
            set { _strObservaciones = value; }
        }

        #endregion

        #region Metodos

        public string consultarRemision()
        {
            try
            {
                string query = "select to_number(nom_con) + 1 as REMISION from controlp where id_con='REM' and cod_con='REP' ";
                DataTable val = _mod.consulta(query);

                return val.Rows[0][0].ToString().Trim().PadLeft(6, '0');
            }
            catch (Exception e) { throw e; }
        }

        public List<MEntregarReparaciones> listarReparaciones(string strCliente)
        {
            try
            {
                string strCondicion1 = "";

                if (strCliente == "" || strCliente == "ZZZ")
                    strCondicion1 = " 1=1 ";
                else
                    strCondicion1 = " b.codcli_cli  = '" + strCliente + "' ";

                string query = "select a.NROREP_ERP, a.CONSEC_ERP, a.NROORD_ERP, a.CODREF_ERP, c.NOMREF_REF, a.CODCOL_ERP, d.NOMCOL_COL, a.CODTAL_ERP, Decode(a.TIPREP_ERP, 'G', 'Garantia', 'S', 'Servicio') as TIPREP_ERP, nvl(f.nomdan_mdn, ' ') as strMotivo1, nvl(g.nomdan_mdn, ' ') as strMotivo2, nvl(h.nomdan_mdn, ' ') as strMotivo3, nvl(i.nomdan_mdn, ' ') as strMotivo4, nvl(j.nomdan_mdn, ' ') as strMotivo5, nvl(k.nommot_mrp, ' ') as strProceso1, nvl(l.nommot_mrp, ' ') as strProceso2, nvl(m.nommot_mrp, ' ') as strProceso3, nvl(n.nommot_mrp, ' ') as strProceso4, nvl(o.nommot_mrp, ' ') as strProceso5, a.CODMOT1_ERP, a.CODMOT2_ERP, a.CODMOT3_ERP, a.CODMOT4_ERP, a.CODMOT5_ERP, a.CODPRC1_ERP, a.CODPRC2_ERP, a.CODPRC3_ERP, a.CODPRC4_ERP, a.CODPRC5_ERP, a.observ_erp from encrepp a inner join maeclip b on a.codcli_erp = b.codcli_cli inner join USU_DBA.maeref c on a.codref_erp = c.codref_ref inner join USU_DBA.maecol d on a.codcol_erp = d.codcol_col inner join detrepp e on a.codcli_erp = e.codcli_drp and a.nrorep_erp = e.nrorep_drp and a.consec_erp = e.consec_drp and e.NUMERO_DRP = 1 left join maedanp f on a.codmot1_erp = f.coddan_mdn left join maedanp g on a.codmot2_erp = g.coddan_mdn left join maedanp h on a.codmot3_erp = h.coddan_mdn left join maedanp i on a.codmot4_erp = i.coddan_mdn left join maedanp j on a.codmot5_erp = j.coddan_mdn left join motrepp k on a.codprc1_erp = k.codmot_mrp left join motrepp l on a.codprc2_erp = l.codmot_mrp left join motrepp m on a.codprc3_erp = m.codmot_mrp left join motrepp n on a.codprc4_erp = n.codmot_mrp left join motrepp o on a.codprc5_erp = o.codmot_mrp where a.estado_erp = 'R' and a.tiprep_erp in ('G', 'S') and " + strCondicion1 + " order by a.NROREP_ERP "; 
                DataTable val = _mod.consulta(query);
                List<MEntregarReparaciones> lisreparaciones = new List<MEntregarReparaciones>();
                foreach (DataRow r in val.Rows)
                {
                    lisreparaciones.Add(new MEntregarReparaciones
                    {
                        strReparacion = r["NROREP_ERP"].ToString(),
                        numConsecutivo = Convert.ToInt32(r["CONSEC_ERP"]),
                        strOrden = r["NROORD_ERP"].ToString(),
                        strReferencia = r["CODREF_ERP"].ToString(),
                        strNombreReferencia = r["NOMREF_REF"].ToString(),
                        strColor = r["CODCOL_ERP"].ToString(),
                        strNombreColor = r["NOMCOL_COL"].ToString(),
                        strTalla = r["CODTAL_ERP"].ToString(),
                        strTipo = r["TIPREP_ERP"].ToString(),
                        strDetalle = "",
                        strMotivo1 = r["STRMOTIVO1"].ToString(),
                        strMotivo2 = r["STRMOTIVO2"].ToString(),
                        strMotivo3 = r["STRMOTIVO3"].ToString(),
                        strMotivo4 = r["STRMOTIVO4"].ToString(),
                        strMotivo5 = r["STRMOTIVO5"].ToString(),
                        strProceso1 = r["STRPROCESO1"].ToString(),
                        strProceso2 = r["STRPROCESO2"].ToString(),
                        strProceso3 = r["STRPROCESO3"].ToString(),
                        strProceso4 = r["STRPROCESO4"].ToString(),
                        strProceso5 = r["STRPROCESO5"].ToString(),
                        strCodigoMotivo1 = r["CODMOT1_ERP"].ToString(),
                        strCodigoMotivo2 = r["CODMOT2_ERP"].ToString(),
                        strCodigoMotivo3 = r["CODMOT3_ERP"].ToString(),
                        strCodigoMotivo4 = r["CODMOT4_ERP"].ToString(),
                        strCodigoMotivo5 = r["CODMOT5_ERP"].ToString(),
                        strCodigoProceso1 = r["CODPRC1_ERP"].ToString(),
                        strCodigoProceso2 = r["CODPRC2_ERP"].ToString(),
                        strCodigoProceso3 = r["CODPRC3_ERP"].ToString(),
                        strCodigoProceso4 = r["CODPRC4_ERP"].ToString(),
                        strCodigoProceso5 = r["CODPRC5_ERP"].ToString(),
                        strObservaciones = r["OBSERV_ERP"].ToString().Trim()
                    });
                }
                return lisreparaciones;
            }
            catch (Exception e) { throw e; }
        }
        #endregion
    }
}
